/**
 * 第一步：连接数据库  ====> 在db完成
 * 第二步：启动服务
 *   使用中间件：静态资源、bodyParser、路由器
 *   使用上ejs
 *   启动服务
 */
(async ()=>{  // 因为要用 saync 和 await 所以需要一个函数包装起来
  const express = require('express'); // 引入express框架
  const bookRouter = require('./routers/bookRouter'); // 引入路由器页面内的路由
  const db = require('./db'); // 引入数据库

  // 连接连接数据库
  await db();

  // 创建应用对象
  const app = express();

  // 使用中间件 => 添加允许跨域的响应头 => 解决跨域问题
  app.use(function (req,res,next) {
    res.setHeader('Access-Control-Allow-Origin','*'); // 允许跨域任意请求
    res.setHeader('Access-Control-Allow-Headers','*'); // 允许客户端可以设置请求头
    res.setHeader('Access-Control-Allow-Methods','*'); // 允许任意请求方式可以进行任意跨域请求

    // 放行
    next();
  })


  // 设置中间件
  app.use(express.static('public'));  // 静态资源
  app.use(express.urlencoded({extended:false})); // 解析urlencoded数据格式的
  app.use(express.json()); //解析json数据格式的
  app.use('/book',bookRouter); // 路由器

  // 解析ejs文件
  app.set('view engine','ejs');
  // 需要解析的ejs文件所在位置
  app.set('views','./views');
  
  // 启动服务
  app.listen('8080',() =>{
    console.log('启动服务成功：http://localhost:8080');
  })
})()
